<?php
/**
 * 企业资质申请模型
 */

namespace app\common\model;

use think\model\concern\SoftDelete;

class Apply extends CommonBaseModel {
	use SoftDelete;
	// 自定义选择数据
	// 状态列表
	const STATUS_LIST = [
		0 => '审核中',
		1 => '审核通过',
		2 => '审核失败',
	];

	protected $name = 'apply';
	protected $autoWriteTimestamp = true;

	// 可搜索字段
	public array $searchField = ['company_name', 'name', 'phone'];

	// 可作为条件的字段
	public array $whereField = ['cate_id', 'status'];

	// 可作为多选条件的字段
	public array $multiWhereField = [];

	// 可做为时间
	public array $timeField = [];

	/**
	 * 是否具备运输系统获取器
	 */
	public function getIsCarTextAttr($value, $data): string {
		return self::BOOLEAN_TEXT[$data['is_car']];
	}

	/**
	 * 状态获取器
	 */
	public function getStatusNameAttr($value, $data) {
		return self::STATUS_LIST[$data['status']];
	}

	/**
	 * 关联
	 */
	public function cate() {
		return $this->belongsTo(Cate::class);
	}
	public function setDishoneAttr($value) {
		try {
			return json_encode($value, JSON_THROW_ON_ERROR);
		} catch (JsonException $e) {
			return (object) [];
		}
	}

	public function getDishoneAttr($value) {
		try {
			return json_decode($value, true, 512, JSON_THROW_ON_ERROR);
		} catch (JsonException $e) {
			return [];
		}
	}
	public function getCateAttr($value): array {
		return explode(',', $value);
	}

	/**
	 * 角色修改器
	 * @param $value
	 * @return string
	 */
	public function setCateAttr($value): string {
		return implode(',', $value);
	}

	public function getCateListAttr($value, $data): array {
		try {
			return (new Cate)->whereIn('id', $data['cate'])
				->select()
				->toArray();
		} catch (DataNotFoundException | ModelNotFoundException $e) {
			return [];
		}
	}
}
